package com.attendance.www.hr.dao.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.attendance.www.hr.beans.ReportAttendanceBean;
import com.attendance.www.hr.beans.ReportAttendanceParam;

public interface ReportAttendanceExtMapper {
	
	/**
	 * 查询报表
	 * @param paramBean
	 * @param employeeIds
	 * @return
	 */
	List<ReportAttendanceBean> selectReportList(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);
	
	/**
	 * 翻页查询考勤报表基本信息
	 */
	List<ReportAttendanceBean> getReportBaseInfoList(@Param("reportAttendanceParam")ReportAttendanceParam reportAttendanceParam);
    
//   	int count(@Param("regionType")Integer regionType);
   	
   	/**
   	 * 计算总条数
   	 */
   	int countByParam(@Param("reportAttendanceParam")ReportAttendanceParam reportAttendanceParam);
   	
   	/**
   	 * 查询产假额度
   	 */
   	int getHolidayQuota(@Param("regionType")Integer regionType, @Param("maternity")String maternity);

   	/**
	 * 取得员工应出勤天数
	 */
   	List<ReportAttendanceBean> getRealAttendanceDays(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);
   	
   	/**
	 * 取得员工迟到次数
	 */
   	List<ReportAttendanceBean> getLateCount(@Param("paramBean")ReportAttendanceParam paramBean,@Param("employeeIds")List<Integer> employeeIds);
   	
	/**
	 * 取得员工早退次数
	 */
   	List<ReportAttendanceBean> getLeaveEarlyCount(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);
	
	/**
	 * 取得员工旷工次数
	 */
   	List<ReportAttendanceBean> getAbsentCount(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);
	
   	/**
   	 * 取得员工补签次数
   	 */
   	List<ReportAttendanceBean> getRetroactiveCount(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);
   	
	/**
	 * 取得员工平日加班小时数
	 */
   	List<ReportAttendanceBean> getOvertimeNomal(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);
	
	/**
	 * 取得员工双休日加班小时数
	 */
	List<ReportAttendanceBean> getOvertimeWeekend(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);
	
	/**
	 * 取得员工节假日加班小时数
	 */
	List<ReportAttendanceBean> getOvertimeHoliday(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);
	
	/**
	 * 取得员工请年假天数
	 */
	List<ReportAttendanceBean> getRestYearUsed(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);

	/**
	 * 取得员工请假调休天数
	 */
	List<ReportAttendanceBean> getRestTuneUsed(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);

	/**
	 * 取得员工请病假天数
	 */
	List<ReportAttendanceBean> getRestIllUsed(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);
	
	/**
	 * 取得员工请事假天数
	 */
	List<ReportAttendanceBean> getRestThingUsed(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);
	
	/**
	 * 取得员工请产检假天数
	 */
	List<ReportAttendanceBean> getRestCheckUsed(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);
	
	/**
	 * 取得员工可以请产假天数 
	 */
	List<ReportAttendanceBean> getYearRestBornHave(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);
	
	/**
	 * 取得员工已请产假天数
	 */
	List<ReportAttendanceBean> getRestBornUsed(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);

	/**
	 * 取得员工请哺乳假天数
	 */
	List<ReportAttendanceBean> getRestSuckleUsed(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);

	/**
	 * 取得员工请婚假天数
	 */
	List<ReportAttendanceBean> getRestMarryUsed(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);
	
	/**
	 * 取得员工请丧假天数
	 */
	List<ReportAttendanceBean> getRestDieUsed(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);

	/**
	 * 取得员工请陪产假天数
	 */
	List<ReportAttendanceBean> getRestBornAttendUsed(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);

	/**
	 *  年假开始日期
	 */
	List<ReportAttendanceBean> getYearRestYearBegin(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);

	/**
	 *  可享受年假
	 */
	List<ReportAttendanceBean> getYearRestYearAll(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);

	/**
	 *  剩余调休假
	 */
	List<ReportAttendanceBean> getYearRestTuneRemain(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);

	/**
	 *  已休产假累计
	 */
	List<ReportAttendanceBean> getYearRestBornUsed(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);
	
	/**
	 * 已休产假累计
	 */
	List<ReportAttendanceBean> getYearRestBornBegin(@Param("paramBean")ReportAttendanceParam paramBean, @Param("employeeIds")List<Integer> employeeIds);
	
	
}